let ary = [2, 5, 7, 2, 6, 8, 12, 7, 5, 15, 20, 12, 17];

// new Set()
function newSet(ary) {
    // 1、
    // return Array.from(new Set(ary));
    // 2、
    return [...new Set(ary)];
}
console.log(newSet(ary).sort((a, b) => a - b));

// 循环
function fors(ary) {
    // 最后一项不需要比较所以循环次数少一次
    for (let i = 0; i < ary.length - 1; i++) {
        const element = ary[i];
        // 拿到当前项的后面项组成新的数组
        const newAry = ary.slice(i + 1);
        // 判断当前项和后面的数组有没有重复项
        if (newAry.indexOf(element) > -1) {
            // 如果找到了重复项，则用最后一项替换当前项
            ary[i] = ary[ary.length - 1];
            // 因为使用了最后一项替换，所以要删掉最后一项的值
            ary.length--;
            // 因为使用最后一项的值替换了当前项的值，所以当前项的值是一个新值，需要重新判断，所以索引不能往后执行
            i--;
        }
    }
    return ary;
}
console.log(fors(ary).sort((a, b) => a - b));